package com.inspur.edp.metadata.rtcustomization.servermanager.dac.api;

import com.inspur.edp.metadata.rtcustomization.api.entity.GspEmbeddedMdRtContent;
import com.inspur.edp.metadata.rtcustomization.api.entity.GspMdRtContentSuInfo;
import io.iec.caf.data.jpa.repository.CafI18nColumnDict;

import java.util.List;

/**
 * 元数据仓库接口基类
 * 在元数据服务和jpa中间添加此类，以便实现文件化和数据库两种类型的存储
 *
 * @author liangff
 * @since 0.1.0
 * 2024/11/23
 */
public interface MetadataRtContentBasicRepository {
    void save(GspEmbeddedMdRtContent gspEmbeddedMdRtContent, CafI18nColumnDict CafI18nColumnDict);

    GspEmbeddedMdRtContent findByMetadataId(String metadataId);

    GspEmbeddedMdRtContent findByMetadataIdAndSourceType(String metadataId, int sourceType);

    void deleteByMetadataId(String metadataId);

    List<GspEmbeddedMdRtContent> findAllGspMdRtContents(
            List<String> metadataTypes,
            int typeSize,
            List<String> businessObjectIds,
            int objSize,
            String metadataNamespace,
            String metadataCode,
            Integer sourceType,
            String mdpkgId);

    List<GspEmbeddedMdRtContent> findAllGspMdRtContentsByMdpkgId(String mdpkgId);

    List<GspMdRtContentSuInfo> findAllGspMdRtContentSuInfo();

    List<GspEmbeddedMdRtContent> findAllSimpleGspMdRtContents(List<String> metadataTypes, int typeSize, Integer sourceType);
}
